const router = require('express').Router();
const { v4: uuidv4 } = require('uuid');// 生成id (随机字符串)
const Jwt = require('../../common/token/jwt');//处理token的工具 json web token
const aes = require('../../common/aes');//加密的工具
const adminModel = require('../../model/adminModel')
// 管理员登录接口
// URL: /api/admin/signin
// 参数：admin_acc , admin_pwd
router.post('/signin', async (req,res)=>{
    let {admin_acc, admin_pwd} = req.body;
    if(admin_acc && admin_pwd) {
        // 登录方法
        await adminModel.signin(admin_acc)
        .then(
            (content)=>{
                // console.log("Y:",content)
                let { rows } = content;
                if(rows[0]){
                    // 判断密码是否正确
                    // console.log(rows , admin_pwd, rows[0].admin_pwd)
                    if(aes.aesDecrypt(admin_pwd, rows[0].admin_pwd)){
                        // 生成token (临时身份) 
                        let admin_id = rows[0].admin_id;
                        let jsonwebtoken = new Jwt(admin_id);
                        // 追踪用户的登录状态
                        let token = jsonwebtoken.getToken();
                        res.send({
                            code: 200,
                            msg: '登录成功。',
                            token 
                        })
                    }
                    else {
                        res.send({
                            code: -1,
                            msg: '账号或者密码错误。'
                        })
                    }
                }
                else {
                    res.send({
                        code: 404,
                        msg: '该账号不存在。'
                    })
                }
            },
            (error)=>{

            },
        )
    }
    else {
        res.send({
            code: 404,
            msg: '缺少参数。'
        })
    }

})
// 管理员注册接口
// URL: /api/admin/signup
// 参数：admin_acc , admin_pwd
router.post('/signup', async (req,res)=>{
    let {admin_acc, admin_pwd} = req.body;
    if(admin_acc && admin_pwd) {
        // 加密密码
        admin_pwd = aes.aesEncrypt(admin_pwd);
        let admin_id = uuidv4();
        await adminModel.signup(admin_acc, admin_pwd,admin_id)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: 404,
            msg: '缺少参数。'
        })
    }
})
// 用户列表
// URL: /api/admin/list_user
// 参数：token , page , pageSize
router.get('/list_user',async (req,res)=> {
    // 获取token
    let token = req.query.token || req.headers.token;
    // 验证token
    let result = new Jwt(token).verifyToken();
    if (result.code == 200) {
        let {page , pageSize} = req.query;
        // 分页列表
        await adminModel.list_user(page , pageSize)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: '登录失效,请重新登录。'
        })
    }
})
// 删除用户
// URL: /api/admin/remove_user
// 参数：token , user_id
router.post('/remove_user',async (req,res)=> {
    // 获取token
    let token = req.body.token || req.headers.token;
    // 验证token
    let result = new Jwt(token).verifyToken();
    if (result.code == 200) {
        let {user_id} = req.body;
        // 删除
        await adminModel.remove_user(user_id)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: '登录失效,请重新登录。'
        })
    }
})

// 搜索用户
// URL: /api/admin/search
// 参数：keyword
router.get('/search',async (req,res)=> {
    // 获取token
    let token = req.query.token || req.headers.token;
    // 验证token
    let result = new Jwt(token).verifyToken();
    if (result.code == 200) {
        let {keyword} = req.query;
        // 删除
        await adminModel.search(keyword)
        .then(
            (content)=>{
                res.send(content)
            },
            (error)=>{
                res.send(error)
            }
        )
    }
    else {
        res.send({
            code: -1,
            msg: '登录失效,请重新登录。'
        })
    }
})

module.exports = router;